It is known in the prior art to test certain computer system components when the computer system is first started, prior to booting or loading the operating system. Testing can be performed, for example, by a basic input output system (“BIOS”) that typically resides in a ROM.
The term “boot”, and associated terms such as “booting” and “boot up”, as used herein, mean the process by which a computing device such as a computer system loads an operating system or operating system kernel into an operational memory, such as random access memory (“RAM”) from a long-term storage memory, such as a read-only memory (ROM) or a hard drive. The computer operating system performs various administrative tasks and is responsible for controlling the execution of other computer programs on the computer system.
The BIOS comprises a set of computer-executable routines that enable the computer system to perform a series of self-tests on various of its components to make sure everything is functioning properly. The BIOS also typically initializes various of these components, which can include, but are not limited to, system busses; cache memory; flash or non-volatile memory, e.g. complementary metal oxide semiconductor (“CMOS”) memory; clock; keyboard controller; video display controller; printer controller; peripheral controller(s); mouse controller; communications port(s); and so forth. In addition to performing such startup tasks, the BIOS can also direct many basic operational functions of the computer system, such as controlling the keyboard, the video display, disk drives, communications functions, and other assorted components and functions.
The architectural organization of computer components can assume many forms. In a known architecture, various components can reside in a chipset coupled to a processor.
Because ROM memory is typically slower than RAM, the BIOS is usually first loaded from ROM into RAM, and it is then executed from RAM. Before loading the BIOS into RAM, it may test a memory controller located, for example, in the chipset. It may then test the RAM to be sure it is functioning properly, and it initializes the RAM. The RAM test typically involves successively writing a predetermined data pattern to each memory address, followed by successively reading each memory block and comparing its contents with the predetermined data pattern. This test can consume a significant amount of time, depending upon the size of the RAM. The BIOS may first test only the amount of RAM required to load the BIOS from ROM, and then check the remainder of RAM later following other tests.
The BIOS continues to execute tests on and to initialize various components, which may be located in the chipset, on the motherboard, or elsewhere in the computer system, e.g. mass storage devices. All of these tests consume significant time. It is not uncommon for a typical boot of a computer system to consume one to two minutes.